import JSEncrypt from 'jsencrypt/bin/jsencrypt.min';
import publicKey from '@/config/esa_public.js';
import config from '@/config/index';

// 密钥对生成 http://web.chacuo.net/netrsakeypair

// const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' +
//   'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='

const privateKey =
	'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' +
	'7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' +
	'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' +
	'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' +
	'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' +
	'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' +
	'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' +
	'UP8iWi1Qw0Y=';

export function AES_CBC_ENCRYPT(text, publicKey) {
	// var keyHex = CryptoJS.enc.Base64.parse(secretKey);
	// var ivHex = keyHex.clone();
	// ivHex.sigBytes = 16;
	// ivHex.words.splice(4);
	// var messageHex = CryptoJS.enc.Utf8.parse(text);
	// var encrypted = CryptoJS.AES.encrypt(messageHex, keyHex, {
	// iv: ivHex,
	// mode: CryptoJS.mode.CBC,
	// padding: CryptoJS.pad.Pkcs7
	// });
	// return encrypted.toString();

	const phone = '';
	const textHex = CryptoJS.enc.Utf8.parse(text);

	const key = CryptoJS.enc.Utf8.parse(publicKey);
	const iv = CryptoJS.enc.Utf8.parse(phone);
	const encryptedContent = CryptoJS.AES.encrypt(textHex, key, {
		// iv: iv,
		mode: CryptoJS.mode.ECB,
		// padding: CryptoJS.pad.Pkcs7

	});
	return encryptedContent.toString();
}
export function encryptAES(word, keyStr) {

	var key = CryptoJS.enc.Utf8.parse(keyStr);
	var srcs = CryptoJS.enc.Utf8.parse(word);
	var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
	return encrypted.toString();
	// return CryptoJS.AES.encrypt(txt, config.aes_key).toString();
}
// 加密
export function encrypt(txt) {
	const encryptor = new JSEncrypt();
	encryptor.setPublicKey(publicKey); // 设置公钥
	return encryptor.encrypt(txt); // 对数据进行加密
}

export function signAndTimestamp(){
	let now =new Date()
	const timestamp=now.getTime()
	const md5Hash=CryptoJS.MD5(config.smsSignKey+timestamp)
	const sign=md5Hash.toString(CryptoJS.enc.Hex)
	return {sign,timestamp}
}
function encryptCommon(plainText, keyHex) {
	const key = CryptoJS.enc.Hex.parse(keyHex);
	const encrypted = CryptoJS.AES.encrypt(
		CryptoJS.enc.Utf8.parse(plainText),
		key,
		{
			mode: CryptoJS.mode.ECB,
			padding: CryptoJS.pad.Pkcs7
		}
	);
	return encrypted.toString(); // Base64 格式的密文
}
// 解密
// export function decrypt(txt) {
//   const encryptor = new JSEncrypt()
//   encryptor.setPrivateKey(privateKey) // 设置私钥
//   return encryptor.decrypt(txt) // 对数据进行解密
// }

// export function encryptAES(str, secretKey) {
// 	let now = new Date();
// 	const timestamp = now.getTime();
// 	const md5Hash = CryptoJS.MD5(secretKey);
// 	const finalStr = md5Hash.toString(CryptoJS.enc.Hex);
// 	return finalStr;
//
// 	var keyHex = CryptoJS.enc.Base64.parse(secretKey);
// 	var ivHex = keyHex.clone();
// 	ivHex.sigBytes = 16;
// 	ivHex.words.splice(4);
// 	var messageHex = CryptoJS.enc.Utf8.parse(str);
// 	var encrypted = CryptoJS.AES.encrypt(messageHex, keyHex, {
// 		iv: ivHex,
// 		mode: CryptoJS.mode.CBC,
// 		padding: CryptoJS.pad.Pkcs7
// 	});
// 	return encrypted.toString();
//
// 	var decArray = hexStrToDecArray(str);
// 	var wordArray = int8parse(decArray);
// 	var encrypted = CryptoJS.AES.encrypt(wordArray, aesKeyBytes(), {
// 		mode: CryptoJS.mode.ECB,
// 		padding: CryptoJS.pad.NoPadding
// 	});
// 	return wordArrayToHexStr(encrypted.ciphertext.words);
// }


// function encryptText() {
// 	var plain = document.getElementById('plain').value;
// 	// console.log('plain: ' + plain);
// 	var encrypted = encryptAES(plain);
// 	// console.log('encrypted: ' + encrypted);
// 	document.getElementById('encrypted').value = encrypted;
// }

// function decryptText() {
// 	var encrypted = document.getElementById('todecrypt').value;
// 	console.log('encrypted: ' + encrypted);
// 	var decrypted = decrypt(encrypted);
// 	console.log('decrypted: ' + decrypted);
// 	document.getElementById('decrypted').value = decrypted;
// }

// 加解密用到的密钥
// function aesKeyBytes() {
// 	var key_Int = new Int8Array([ 65, 144, 48, 53, 18, 52, 86, 120, 131, 116, 124, 139, 237, 203, 169, 135 ]);
// 	var keyBytes = int8parse(key_Int);
// 	return keyBytes;
// }

// // 十六进制字符串数组，个数如果不足16整数倍则补0
// function hexTo16Hex(str) {
// 	var diff = 16 - ((str.length + 1) / 3) % 16;
// 	for (var i = 0; i < diff; i++) {
// 		str = str + ' 00';
// 	}
// 	return str;
// }
//
// // AES解密
// function decrypt(str) {
// 	var decArray = hexStrToDecArray(str);
// 	var wordArray = int8parse(decArray);
// 	var base64Str = CryptoJS.enc.Base64.stringify(wordArray);
// 	var decrypted = CryptoJS.AES.decrypt(base64Str, aesKeyBytes(), {
// 		mode: CryptoJS.mode.ECB,
// 		padding: CryptoJS.pad.NoPadding
// 	});
// 	return wordArrayToHexStr(decrypted.words);
// }

// 构建WordArray对象
// function int8parse(u8arr) {
// 	var len = u8arr.length;
// 	var words = [];
// 	for (var i = 0; i < len; i++) {
// 		words[i >>> 2] |= (u8arr[i] & 0xff) << (24 - (i % 4) * 8);
// 	}
// 	return CryptoJS.lib.WordArray.create(words, len);
// }

// // 十六进制字符串(空格分割)转成十进制数字的数组
// function hexStrToDecArray(str) {
// 	var strArray = str.split(' ');
// 	var decArray = [];
// 	for (var i = 0; i < strArray.length; i++) {
// 		decArray.push(parseInt(strArray[i], 16));
// 	}
// 	return arrayTo16Array(decArray);
// }
//
// // 十进制数组转成十六进制字符串
// function decArrayToHexStr(array) {
// 	var hexStr = '';
// 	for (var i = 0; i < array.length; i++) {
// 		var str = array[i].toString(16).toUpperCase();
// 		if (str.length < 2) {
// 			str = '0' + str;
// 		}
// 		hexStr = hexStr + str + ' ';
// 	}
// 	return hexStr.substr(0, hexStr.length - 1);
// }
//
// // word类型的十进制数组转成十六进制字符串
// function wordArrayToHexStr(array) {
// 	var hexStr = '';
// 	for (var i = 0; i < array.length; i++) {
// 		var num = array[i];
// 		if (num < 0) {
// 			num = array[i] + 0x100000000;
// 		}
// 		var str = num.toString(16).toUpperCase();
// 		var fullStr = str;
// 		if (str.length < 8) {
// 			for (var j = 0; j < 8 - str.length; j++) {
// 				fullStr = '0' + fullStr;
// 			}
// 		}
// 		hexStr = hexStr + fullStr;
// 	}
// 	var ret = '';
// 	for (var i = 0; i < hexStr.length; i += 2) {
// 		ret = ret + hexStr.substr(i, 2) + ' ';
// 	}
// 	return ret.substr(0, ret.length - 1);
// }



// // 数组元素个数必须是16的整数倍，不足的在后面补0
// function arrayTo16Array(array) {
// 	var len = array.length;
// 	var distLen = parseInt((array.length - 1) / 16) * 16 + 16;
// 	for (var i = array.length; i < distLen; i++) {
// 		array[i] = 0;
// 	}
// 	return array;
// }
